Annotating Java class files with virtual registers for performance
نویسندگان
چکیده
The Java .class file is a compact encoding of programs for a stack-based virtual machine. It is intended for use in a networked environment, which requires machine independence and minimized consumption of network bandwidth. However, as in all interpreted virtual machines, performance does not match that of code generated for the target machine. We propose verifiable, machine-independent annotations to the Java class file to bring the quality of the code generated by a “just-in-time” compiler closer to that of an optimizing compiler without a significant increase in code generation time. This division of labor has expensive machine-independent analysis performed off-line and inexpensive machine-dependent code-generation performed on the client. We call this phenomenon “super-linear analysis and linear exploitation.” These annotations were designed mindful of the concurrency features of the Java language. In this paper we report results from our machine-independent, prioritized register assignment. We also discuss other possible annotations.
منابع مشابه
Tabular Code Generation: Write Once, Generate Many
PressPot is a system that adds annotations to Java .class files. [3] These annotations are used by an “annotation-aware” Java Virtual Machine (JVM) which uses these annotations to generate high-quality machine code quickly. If these annotated .class files are sent to a normal JVM, they are ignored and the program runs normally. One of the annotations, used for assigning machine registers, is ca...
متن کاملUsing the SafeTSA Representation to Boost the Performance of an Existing Java Virtual Machine
High-performance just-in-time compilers for Java need to invest considerable effort before actual code generation can commence. SafeTSA, a typed intermediate representation based on SSA form, was designed to ease this burden, decreasing the time required for dynamic compilation, without sacrificing safety or code quality. We report on our experience integrating support for loading and compiling...
متن کاملCompact Java binaries for embedded systems
Embedded systems bring special purpose computing power to consumer electronics devices such as smartcards, CD players and pagers. Java is being aggressively targeted at such systems with initiatives such as the Java 2 Platform, Micro Edition, which introduces certain efficiency optimizations to the Java Virtual Machine. Code size reduction has been identified as an important future goal for ens...
متن کاملTailored Compression of Java Class Files
The Java programming language and its implementation using a Java Virtual Machine (JVM) have greatly simplified the task of developing web-based application programs. In this and in other roles, Java has been a runaway success. When a Java program is compiled, it is translated into a collection of class files. Each class file contains a variety of components, including instructions for the JVM ...
متن کاملMore Efficient Network Class Loading Through Bundling
In this paper, we describe bundling, a technique for the transfer of files over a network. The goal of bundling is to group together files that tend to be needed in the same program execution and that are loaded close together. We describe an algorithm for dividing a collection of files into bundles based on profiles of file-loading behavior. Our motivation for bundling is to improve the perfor...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
- Concurrency - Practice and Experience
دوره 12 شماره
صفحات -
تاریخ انتشار 2000